[toc]
python基 础十四 模块
重点
##os模块
#文件夹相关
os.makedirs('dirname1/dirname2') 可生成多层递归目录 ***
os.removedirs('dirname1') 若目录为空,则删除,并递归到上 一级目录,如若也为空,则删除,依此类推 ***
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname ***
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname ***
#文件相关
os.remove() 删除一个文件 ***
os.rename("oldname","newname") 重命名文件/目录 ***
#路径相关
os.path.abspath(path) 返回path规范化的绝对路径 ***
os.path.split(path) 将path分割成目录和文件名二元组返回 ***
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False ***
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False ***
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False ***
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 ***
os.path.getsize(path) 返回path的大小 ***
#sys模块
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 ***
1. 模块介绍
py文件就是一个模块
2. 模块分类
2.1 内置模块
内置模块也叫标准库
2.2 第三方模块
别人写好的功能
2.3 自定义模块
自己写的特定功能
3. 模块作用
1.开发效率高,有大量的内置函数和模块
2.拿来主义,大量的第三方模块,拿来既能用,不需要知道原理
3.减少重复代码,分文件管理,有助于修改和维护
4. 模块使用
4.1 语法
import 模块名
4.2 模块的两种用法
1.当作普通模块执行
2.被当作脚本执行
5. 自定义模块
自定义模块使用示例
//非同级目录示例
1.在当前需要调用模块的py文件test.py的不同路径新建一个文件i.py,一会test.py调用这个文件i.py
2.在/Users/baixuebing/Desktop下创建一个i.py文件,文件内如下
print("非同级目录自定义模块路径导入练习")
a = 10
b = 20
3.test.py文件内容如下
import sys #需要导入sys模块
sys.path.append('/Users/baixuebing/Desktop') #这里写要导入的自定义模块的路径
from i import a,b #自定义模块名是i,导入a,b两个功能
print(a,b) #打印功能
非同级目录自定义模块路径导入练习
10 20
//同级目录示例
说明:test.py文件与自定义模块i.py在同一个路径下
from i import a,b
print(a,b)
同级目录自定义模块导入练习
10 20
5.1 自定义模块特殊说明
应用场景:
1.现在有一个自定义模块i.py,文件内容如下
def login():
print('登陆')
def register():
print('注册')
print('自定义模块保留自定义内容不被调用')
print(123456)
调用者文件test.py,文件内容如下
import sys
from i import login
login()
2.导入这个自定义模块并执行,返回结果如下,但是自定义模块中调用函数的123456不想被调用,需要做一下特殊处理,让调用者只能看到 ’自定义模块保留自定义内容不被调用‘、登陆、注册,不能看到123456
自定义模块保留自定义内容不被调用
123456
3.修改自定义模块i.py,在a()和b()的上方加 入一行代码
if __name__ == "__main__":
def a():
print('登陆')
def register():
print('注册')
print('自定义模块保留自定义内容不被调用')
if __name__ == "__main__":
#不可外传功能
print(123456)
4.调用者再次执行,结果如下,结果123456无法获取
自定义模块保留自定义内容不被调用
登陆
🌟🌟🌟
原因:
在当前文件i.py中执行__name__获取的值是'__main__'
当前文件i.py被当作模块导入时,__name__获取的是当前文件名
6. 模块导入
6.1 模块导入过程
1.将模块存储到当前名称空间中,可以使用globals查看
2.以模块的名字命名,并开辟一个独立空间
3.通过模块名来使用模块中的功能